home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2000 July / CD 3 / redhat-6.2.iso / RedHat / instimage / usr / lib / python1.5 / site-packages / libglade.py < prev    next >
Encoding:
Python Source  |  2000-02-16  |  2.0 KB  |  71 lines

  1.  
  2. import gtk; _gtk = gtk; del gtk
  3. import _libglade
  4.  
  5. # enable gnome functionality if it is installed.
  6. try:
  7.     import _gladegnome
  8. except:
  9.     pass
  10.  
  11. class GladeXML(_gtk.GtkData):
  12.     def __init__(self, filename=None, root=None, domain=None, _obj=None):
  13.         if _obj: self._o = _obj; return
  14.         self._o = _libglade.glade_xml_new_with_domain(filename, root,
  15.                                   domain)
  16.     class __cnv:
  17.         def __init__(self, func):
  18.             self.func = func
  19.         def __call__(self, *args):
  20.             a = list(args)
  21.             for i in range(len(args)):
  22.                 if type(args[i]) == _gtk._gtk.GtkObjectType:
  23.                     a[i] = _gtk._obj2inst(args[i])
  24.                 elif type(args[i]) == \
  25.                      _gtk._gtk.GtkAccelGroupType:
  26.                     a[i] = _gtk.GtkAccelGroup(_obj=args[i])
  27.             a = tuple(a)
  28.             ret = apply(self.func, a)
  29.             if hasattr(ret, '_o'): ret = ret._o
  30.             elif hasattr(ret, '_ag'): ret = ret._ag
  31.             elif hasattr(ret, '_im'): ret = ret._im
  32.             return ret
  33.     def signal_connect(self, handler_name, handler, *args):
  34.         _libglade.glade_xml_signal_connect(self._o, handler_name,
  35.                         self.__cnv(handler).__call__,
  36.                         args)
  37.     def signal_autoconnect(self, dict):
  38.         hdict = {}
  39.         for key, value in dict.items():
  40.             if type(value) == type(()) and len(value) >= 2:
  41.                 hdict[key] = (self.__cnv(value[0]).__call__,
  42.                           value[1])
  43.             else:
  44.                 hdict[key] = self.__cnv(value).__call__
  45.         _libglade.glade_xml_signal_autoconnect(self._o, hdict)
  46.     def get_widget(self, name):
  47.         wid = _libglade.glade_xml_get_widget(self._o, name)
  48.         if wid:
  49.             return _gtk._obj2inst(wid)
  50.         else:
  51.             return wid
  52.     def get_widget_by_longname(self, longname):
  53.         wid = _libglade.glade_xml_get_widget_by_long_name(self._o,
  54.                                   longname)
  55.         if wid:
  56.             return _gtk._obj2inst(wid)
  57.         else:
  58.             return wid
  59. _gtk._name2cls['GladeXML'] = GladeXML
  60.  
  61. def get_widget_name(widget):
  62.     return _libglade.glade_get_widget_name(widget._o)
  63. def get_widget_long_name(widget):
  64.     return _libglade.glade_get_widget_long_name(widget._o)
  65. def get_widget_tree(widget):
  66.     xml = _libglade.glade_get_widget_tree(widget._o)
  67.     if xml:
  68.         return GladeXML(_obj=xml)
  69.     return xml
  70.  
  71.